function no(msg = 'error', data = null, code = 0) {
	return {
		code,
		msg,
		data
	};
}

function ok(data = null, msg = 'success', code = 1) {
	return {
		code,
		msg,
		data
	};
}

function ipv6ToV4(ip) {
	if (ip.split(',').length > 0) {
		ip = ip.split(',')[0];
	}
	ip = ip.substr(ip.lastIndexOf(':') + 1, ip.length);
	return ip;
}

/**
 * 时间戳格式化
 */
function getDateTime(timestamp) {
	let t = null;
	// 不传值，则获取当前时间
	if (timestamp === undefined) {
		t = new Date();
	} else if (timestamp) {
		t = new Date(parseInt(timestamp));
	}

	if (t) {
		var n = t.getFullYear();
		var a = t.getMonth() + 1;
		var r = t.getDate();
		var o = t.getHours();
		var i = t.getMinutes();
		var s = t.getSeconds();

		a >= 10 || (a = '0' + a), r >= 10 || (r = '0' + r), o >= 10 || (o = '0' + o), i >= 10 || (i = '0' + i), s >= 10 || (s = '0' + s);

		return [
			n, // yy 0
			a, // mm 1
			r, // dd 2
			n + '-' + a, // yy-mm 3
			a + '/' + r, // mm/dd 4
			o + ':' + i + ':' + s, // hh:mm:ss 5
			n + '-' + a + '-' + r + ' ' + o + ':' + i + ':' + s, // yy-mm-dd hh:mm::ss 6
			a + '-' + r + ' ' + o + ':' + i + ':' + s, // mm-dd hh:mm::ss 7
			n + '-' + a + '-' + r, // yy-mm-dd 8
			n + a + r, // yymmdd 9
			n + a //yymm 10
		];
	} else {
		return ['--', '--', '--', '--', '--', '--', '--', '--', '--'];
	}
}

// 随机生产6为数字验证码
const generateRandomSixDigitNumber = () => {
	return Math.floor(100000 + Math.random() * 900000);
};

// ip

const getClientIp = function (req) {
	return req.headers['x-forwarded-for'] || req.ip || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress || '';
};

module.exports = {
	no,
	ok,
	ipv6ToV4,
	getDateTime,
	generateRandomSixDigitNumber,
	getClientIp
};
